/*
 * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.inspur.edp.cef.generator.coreGenerator.entityGenerator;

import com.inspur.edp.cef.generator.coreGenerator.base.CefCoreGenerator;
import com.inspur.edp.cef.generator.coreGenerator.base.CefCoreGeneratorContext;
import com.inspur.edp.cef.generator.overall.commonModel.CommonModelGeneratorContext;
import com.inspur.edp.das.commonmodel.IGspCommonModel;

public abstract class CommonModelCoreGenerator extends CefCoreGenerator {
  protected CommonModelGeneratorContext cmGenCtx;
  protected IGspCommonModel commonModel;

  protected CommonModelCoreGenerator(
      CommonModelGeneratorContext cmGenCtx, IGspCommonModel commonModel) {
    super(cmGenCtx);
    this.cmGenCtx = cmGenCtx;
    this.commonModel = commonModel;
  }


  // keyword:
  // ORIGINAL LINE: protected new CommonModelCoreGeneratorContext getContext() { return
  // (CommonModelCoreGeneratorContext) super.getContext(); }
  @Override
  protected CommonModelCoreGeneratorContext getContext() {
    return (CommonModelCoreGeneratorContext) super.getContext();
  }

  @Override
  protected final CefCoreGeneratorContext createCoreGenContext() {
    return createEntityCoreGenContext();
  }

  protected abstract CommonModelCoreGeneratorContext createEntityCoreGenContext();
//
//  @Override
//  protected final CefDataTypeImplGenerator createDataTypeImplGenerator() {
//    return createEntityImplGenerator();
//  }
//
//  protected abstract EntityImplGenerator createEntityImplGenerator();
//
//  @Override
//  protected final MgrImplClassGenerator createMgrImplGenerator() {
//    return createEntityMgrImplGenerator();
//  }
//
//  protected abstract EntityMgrImplGenerator createEntityMgrImplGenerator();

  @Override
  protected void doInitialize() {
    super.doInitialize();
    getContext().setNamespace(CMCoreHelper.getNamespace(commonModel));
    getContext().setAssemblyName(getContext().getNameSpace());
  }

  @Override
  protected String getPackageName() {
    return getContext().getNameSpace();
  }
}
